const dataKit = require( "./dataKit")
/**
 * 注意：使用await的方法必须加上async，不然会报错！！
 */
module.exports = {
   /**
    * 根据名称获取商户
    * @param {*} openId 商户的openid
    */
   async getUserByOpenId(context,openId){
      //过滤条件
      const filter = {openId: openId};
      let merchant =await dataKit.findOne(context,"user_info",filter);
      return merchant;
   },
   /**
    * 根据openId获取商户
    * @param {*} openId 商户的openid
    */
   async getMerchantByOpenId(context,openId){
      if(!openId){
         console.info("getMerchantByOpenId --> openId是必须的");
         return null;
      }
      //过滤条件
      const filter = {openId: openId};
      let merchant =await dataKit.findOne(context,"merchant_info",filter);
      return merchant;
   },
   /**
    * 获取商户的AccessToken
    * @param {*} openId 商户的openid
    */
   async getMerchantAccessToken(context,openId){
      const merchant =await this.getMerchantByOpenId(context,openId);
      return merchant.accessToken;
   },
   /**
    * 获取商户唯一的商户AccessToken
    */
   async getDefaultMerchantAccessToken(context){
      //过滤条件
      const filter = {};
      let merchant =await dataKit.findOne(context,"merchant_info",filter);
      return merchant.accessToken;
   },
   /**
    * 商品列表
    * @param {*} context 
    * @param {*} openId 商户的openid
    * @param {*} cid 类目id
    */
   async getProductList(context){
      const accessToken =await this.getDefaultMerchantAccessToken(context);
      const result = await context.cloud.topApi.invoke({  
        api: 'taobao.items.onsale.get',  
        autoSession: false,
        data:{
           session:accessToken,
           fields:"num_iid,title,cid,price,pic_url",
           page_size:200
        }  
      });
      return result;
   },
    /**
     * 判断用户是否是会员
     * @param {*} context 上下文
     * @param {*} mix_nick 用户 mix_nick
     */
    async isTaobaoMember(context,mix_nick) {
        const accessToken =await this.getDefaultMerchantAccessToken(context);
        const identity = await context.cloud.topApi.invoke({
            api:'taobao.crm.member.identity.get',
            autoSession: false,
            data:{
                session: accessToken,
                mix_nick: mix_nick
            }
        });
        if (identity.result.member_info) {// 是会员
            return true;
        }else {
            return false;
        }
    },
    /**
     * 查询用户淘宝订单列表
     * @param {*} context 
     * @param {*} access_token 商家 token
     * @param {*} open_id 用户open_id
     * @param {Object} param 参数
     *  @param {String} access_token 用户token
     *  @param {String} open_id 用户 open_id
     *  @param {String} start_created 查询范围开始时间
     *  @param {String} end_created 结束时间
     */
    async taobaoApiToSoldOrders(context,param) {
        const trades = await context.cloud.topApi.invoke({
            api:'taobao.open.trades.sold.get',
            autoSession: false,
            data: {
                session: param.access_token,
                fields: 'tid,orders',
                buyer_open_id: param.open_id,
                start_created: param.start_created,
                end_created: param.end_created,
                type: 'tmall_i18n',
                status: 'TRADE_FINISHED',// 交易成功
                page_no: 1,
                page_size: 100
            }
        });
        // 判断用户是否有购买过订单
        if (!trades || trades.total_results <= 0) {
            return false;
        } else {
            return true;
        }
    }
}
